package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 对象反序列化
 *
 */
public class OISDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileInputStream fis=new FileInputStream("Person.obj");
        ObjectInputStream ois=new ObjectInputStream(fis);
        /*
        反序列化时可能抛出以下异常
        java.io.InvalidClassException
        原因:
        读取的这个对象的版本号与当前Person类的版本号不一致造成的
        这是因为该对象写入文件后,Person类修改过,所以文件里的对象版本号与当前类的版本号不一致了
        解决:
        可以自行指定Person的版本号,这样一来就算Person类修改过,我们不修改版本号,那么以前用这个版本号写出的对象
        还是可以读取回来的.否则当前类会被系统生成一个版本号,这导致该类只要改过内容版本号一定改变!
         */
        Person p=(Person)ois.readObject();
        System.out.println(p);
        ois.close();

    }

}
